unit RelatorioListagemProdutos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UrelatorioBase, ExtCtrls, DBCtrls, RLPDFFilter, RLXLSFilter,
  RLFilters, RLHTMLFilter, RLDraftFilter, DB, DBTables, RLReport, StdCtrls,
  Buttons, DBClient;

type
  TFRelatorioListagemProdutos1 = class(TFrelatorioBase)
    dblcbGrupoProduto: TDBLookupComboBox;
    dblcbClassProduto: TDBLookupComboBox;
    Label6: TLabel;
    Label53: TLabel;
    rgRelacionado: TRadioGroup;
    rgPerecivel: TRadioGroup;
    rgMercado: TRadioGroup;
    rgCompoeKIT: TRadioGroup;
    rgControle: TRadioGroup;
    rgNatureza: TRadioGroup;
    rgReSuprimento: TRadioGroup;
    rgPontoPedido: TRadioGroup;
    cdsTemp: TClientDataSet;
    RLBand2: TRLBand;
    rlbDetalhe: TRLBand;
    RLLabel1: TRLLabel;
    RLLabel2: TRLLabel;
    RLLabel3: TRLLabel;
    RLLabel4: TRLLabel;
    RLLabel5: TRLLabel;
    rlClass: TRLDBText;
    RLDBText3: TRLDBText;
    RLDBText4: TRLDBText;
    RLDBText5: TRLDBText;
    RLDBText6: TRLDBText;
    RLLabel6: TRLLabel;
    RLLabel7: TRLLabel;
    RLDBText2: TRLDBText;
    RLDBText7: TRLDBText;
    RLLabel8: TRLLabel;
    RLLabel9: TRLLabel;
    RLDBText8: TRLDBText;
    RLDBText9: TRLDBText;
    RLLabel10: TRLLabel;
    RLLabel11: TRLLabel;
    RLDBText10: TRLDBText;
    RLDBText11: TRLDBText;
    DSGrupoProduto: TDataSource;
    dsClassProduto: TDataSource;
    RLLabel12: TRLLabel;
    RLDBText12: TRLDBText;
    procedure btnPesquisarClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnExecutarClick(Sender: TObject);
    procedure rlbDetalheBeforePrint(Sender: TObject; var PrintIt: Boolean);
    procedure dblcbClassProdutoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dblcbGrupoProdutoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure RLDBText6BeforePrint(Sender: TObject; var Text: String;
      var PrintIt: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FRelatorioListagemProdutos1: TFRelatorioListagemProdutos1;
  Classificacao : integer;

implementation

uses UGeral, UDmGestao, UCapturaClassProduto;

{$R *.dfm}

procedure TFRelatorioListagemProdutos1.btnPesquisarClick(Sender: TObject);
const
  ctPesquisa = 
    'SELECT'#10+
    '  CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO,'#10+
    '  CLASSIFICACAOPRODUTO.TIPO,'#10+
    '  CLASSIFICACAOPRODUTO.ESTRUTURA,'#10+
    '  CLASSIFICACAOPRODUTO.CLASS_PROD_DESCRICAO,'#10+
    '  CLASSIFICACAOPRODUTO.ESTRUTURA|| ''-'' || CLASSIFICACAOPRODUTO.CLASS_PROD_DESCRICAO AS CLASSIFICACAO,'#10+
    '  PRODUTO.PROD_CODIGO,'#10+
    '  PRODUTO.PROD_DESCRICAOENT,'#10+
    '  PRODUTO.PROD_DESCRICAOSAI,'#10+
    '  PRODUTO.PROD_REFERENCIA,'#10+
    '  PRODUTO.PROF_REF_FABRICANTE,'#10+
    '  PRODUTO.PROD_UNIDSAIDA,'#10+
    '  PRODUTO.PROD_GRUPOPRODUTO,'#10+
    '  PRODUTO.PROD_CLASSIFPROD1,'#10+
    '  PRODUTO.PROD_CLASSFISCAL2,'#10+
    '  PRODUTO.PROD_CLASSFISCAL9,'#10+
    '  PRODUTO.PROD_CONTACONTABIL,'#10+
    '  PRODUTO.PROD_ICMS,'#10+
    '  PRODUTO.PROD_IPI,'#10+
    '  PRODUTO.PROD_TIPO,'#10+
    '  PRODUTO.PROD_NATUREZA,'#10+
    '  PRODUTO.PROD_SITUACAOTRIBUTARIA,'#10+
    '  PRODUTO.PROD_VALOR,'#10+
    '  PRODUTO.PROD_VALORCOMPRA,'#10+
    '  PRODUTO.PROD_SUBS_TRIBUTARIA,'#10+
    '  PRODUTO.PROD_INCENTIVO_FISCAL,'#10+
    '  PRODUTO.PROD_PESO_BRUTO,'#10+
    '  PRODUTO.PROD_PESO_LIQUIDO,'#10+
    '  PRODUTO.PROD_ALIQUOTA_ICMS,'#10+
    '  PRODUTO.PROD_ALIQUOTA_IPI,'#10+
    '  PRODUTO.PROD_REDUCAO_BASE_ICMS,'#10+
    '  PRODUTO.PROD_REDUCAO_BASE_IPI,'#10+
    '  PRODUTO.PROD_PERC_AGREGACAO_ICMS_SUB,'#10+
    '  PRODUTO.PROD_PERC_PIS,'#10+
    '  PRODUTO.PROD_CREDITAR_PIS,'#10+
    '  PRODUTO.PROD_PERC_COFINS,'#10+
    '  PRODUTO.PROD_CREDITAR_COFINS,'#10+
    '  PRODUTO.PROD_ICMS_SUBS,'#10+
    '  PRODUTO.PROD_CONTACONTABIL_REC_CUST,'#10+
    '  PRODUTO.PROD_CONTACONTABIL_CUSTO,'#10+
    '  PRODUTO.PROD_CONTACONTABIL_RECEITA,'#10+
    '  PRODUTO.PROD_CONTADEVOLUCAO,'#10+
    '  PRODUTO.PROD_CONSIDERAR_TOPERACAO_NFSAI,'#10+
    '  PRODUTO.PROD_CODIGO_APURACAO,'#10+
    '  PRODUTO.PROD_IDENTI_ESPECIAL,'#10+
    '  PRODUTO.PROD_CODIGO_NBM,'#10+
    '  PRODUTO.PROD_PROPIEDADE,'#10+
    '  PRODUTO.PROD_COMISSAO_VEND,'#10+
    '  PRODUTO.PROD_CV,'#10+
    '  PRODUTO.PROD_FORNECEDOR_PREF,'#10+
    '  PRODUTO.PROD_DESCRICAO_COMPLEMENTO,'#10+
    '  PRODUTO.PROD_DESCRICAO_COMPLEMENTO2,'#10+
    '  PRODUTO.PROD_DESCRICAO_COMPLEMENTO3,'#10+
    '  PRODUTO.PROD_DESCRICAO_COMPLEMENTO4,'#10+
    '  PRODUTO.PROD_DESCRICAO_COMPLEMENTO5,'#10+
    '  PRODUTO.PROD_TRAVAPEDIDO,'#10+
    '  PRODUTO.PROD_CODIGO_CONFERENCIA,'#10+
    '  PRODUTO.USUARIO_CADASTRO,'#10+
    '  PRODUTO.USUARIO_AUTERACAO,'#10+
    '  PRODUTO.USUARIO_EXCLUSAO,'#10+
    '  PRODUTO.DATA_CADASTRO,'#10+
    '  PRODUTO.DATA_EXCLUSAO,'#10+
    '  PRODUTO.DATA_AUTERACAO,'#10+
    '  PRODUTO.EXCLUIDO,'#10+
    '  PRODUTO.PROD_MARCA,'#10+
    '  PRODUTO.PROD_FABRICANTE,'#10+
    '  PRODUTO.PROD_NOVO_RECUPERADO,'#10+
    '  PRODUTO.PROD_LOCALIZACAO,'#10+
    '  PRODUTO.PROD_ATIVO,'#10+
    '  PRODUTO.PROD_CONTROLE_MANUTENCAO,'#10+
    '  PRODUTO.PROD_KIT,'#10+
    '  PRODUTO.PROD_USO_CONSUMO,'#10+
    '  PRODUTO.PROD_MERCADO_NR,'#10+
    '  PRODUTO.PROD_PERECIVEL,'#10+
    '  PRODUTO.PROD_RESUPRIMENTO,'#10+
    '  PRODUTO.PROD_PPEDIDO,'#10+
    '  PRODUTO.PROD_QTD_PPEDIDO,'#10+
    '  PRODUTO.PROD_DT_PPEDIDO,'#10+
    '  PRODUTO.PROD_PRAZO_ENTREGA,'#10+
    '  PRODUTO.PROD_TIPOVENDA,'#10+
    '  PRODUTO.PROD_IND_CENTROCUSTO,'#10+
    '  PRODUTO.PROD_CODIGO_ANT,'#10+
    '  PRODUTO.CHAVE_CLASS,'#10+
    '  FABRICANTE.FABRI_DESCRICAO,'#10+
    '  GRUPOPRODUTO.GRUP_PROD_DESCRICAO,'#10+
    '  CLASSIFICACAOPRODUTO.ESTRUTURA,'#10+
    '  CLASSIFICACAOPRODUTO.CLASS_PROD_DESCRICAO'#10+
    'FROM'#10+
    '  CLASSIFICACAOPRODUTO'#10+
    '  LEFT JOIN PRODUTO ON (PRODUTO.PROD_CLASSIFPROD1 = CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO)'#10+
    '  LEFT JOIN FABRICANTE ON (PRODUTO.PROD_FABRICANTE = FABRICANTE.FABRI_CODIGO)'#10+
    '  LEFT JOIN GRUPOPRODUTO ON (PRODUTO.PROD_GRUPOPRODUTO = GRUPOPRODUTO.GRUP_PROD_CODIGO)'#10+
    'WHERE'#10+
    '  (CLASSIFICACAOPRODUTO.CLASS_PROD_CODIGO IS NOT NULL) %s'#10+
    'ORDER BY'#10+
    '  CLASSIFICACAOPRODUTO.ESTRUTURA';

var
  Filtro : String;

begin

  Filtro := '';

  if dblcbGrupoProduto.KeyValue <> null then
    Filtro := Filtro + ' AND(PRODUTO = '+ VarToStr(dblcbGrupoProduto.KeyValue) +')';

  QPesquisa.Close;
  QPesquisa.SQL.Clear;
  QPesquisa.SQL.Add( Format(ctPesquisa, [Filtro]) );
  QPesquisa.Open;

  inherited;

end;

procedure TFRelatorioListagemProdutos1.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;

  FRelatorioListagemProdutos1.Release;
  FRelatorioListagemProdutos1 := Nil;

end;

procedure TFRelatorioListagemProdutos1.btnExecutarClick(Sender: TObject);
var
  i : integer;

begin


  inherited;
  if dblcbGrupoProduto.KeyValue <> null then
    RLMemo.Lines.Add('Grupo produto: ' + dblcbGrupoProduto.Text);

end;

procedure TFRelatorioListagemProdutos1.rlbDetalheBeforePrint(Sender: TObject;
  var PrintIt: Boolean);
begin
  inherited;

  if DSPesquisa.DataSet.FieldByName('TIPO').AsString = 'S' then
  begin

    rlbDetalhe.Height := 14;

    RLDBText2.Top    := 15;
    RLDBText3.Top    := 15;
    RLDBText5.Top    := 15;
    RLDBText8.Top    := 15;
    RLDBText10.Top   := 15;

    RLDBText4.Top    := 30;
    RLDBText6.Top    := 30;
    RLDBText7.Top    := 30;
    RLDBText9.Top    := 30;
    RLDBText11.Top   := 30;

    rlClass.Visible  := True;

  end else begin

    if Classificacao = DSPesquisa.DataSet.FieldByName('CLASS_PROD_CODIGO').AsInteger then
    begin

      rlbDetalhe.Height := 34;

      RLDBText2.Top    := 3;
      RLDBText3.Top    := 3;
      RLDBText5.Top    := 3;
      RLDBText8.Top    := 3;
      RLDBText10.Top   := 3;

      RLDBText4.Top    := 18;
      RLDBText6.Top    := 18;
      RLDBText7.Top    := 18;
      RLDBText9.Top    := 18;
      RLDBText11.Top   := 18;

      rlClass.Visible  := False;

    end else begin

      Classificacao := DSPesquisa.DataSet.FieldByName('CLASS_PROD_CODIGO').AsInteger;

      rlbDetalhe.Height := 45;

      RLDBText2.Top    := 15;
      RLDBText3.Top    := 15;
      RLDBText5.Top    := 15;
      RLDBText8.Top    := 15;
      RLDBText10.Top   := 15;

      RLDBText4.Top    := 30;
      RLDBText6.Top    := 30;
      RLDBText7.Top    := 30;
      RLDBText9.Top    := 30;
      RLDBText11.Top   := 30;

      rlClass.Visible  := True;

    end;

  end;

end;

procedure TFRelatorioListagemProdutos1.dblcbClassProdutoKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  inherited;

  if key = VK_F8 then
  begin

    if FCapturaClassProduto = nil then
      Application.CreateForm(TFCapturaClassProduto, FCapturaClassProduto);

    UCapturaClassProduto.Tela  := 'CadastroProdutos';
    UCapturaClassProduto.Pode  := False;
    FCapturaClassProduto.MontaArvore;
    FCapturaClassProduto.show;
    Exit;

  end else if key = VK_F5 then
  begin

    TDBLookupComboBox(Sender).ListSource.DataSet.Close;
    TDBLookupComboBox(Sender).ListSource.DataSet.Open;

  end else if key = VK_DELETE then
  begin

    TDBLookupComboBox(Sender).KeyValue := null;

  end;

end;

procedure TFRelatorioListagemProdutos1.dblcbGrupoProdutoKeyDown(
  Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  inherited;

  if key = VK_F5 then
  begin

    TDBLookupComboBox(Sender).ListSource.DataSet.Close;
    TDBLookupComboBox(Sender).ListSource.DataSet.Open;

  end else if key = VK_DELETE then
  begin

    TDBLookupComboBox(Sender).KeyValue := null;

  end;
  
end;

procedure TFRelatorioListagemProdutos1.RLDBText6BeforePrint(
  Sender: TObject; var Text: String; var PrintIt: Boolean);
begin
  inherited;

    PrintIt := dsPesquisa.DataSet.FieldByName('PROD_DESCRICAOENT').AsString <>
               dsPesquisa.DataSet.FieldByName('PROD_DESCRICAOSAI').AsString;
end;

end.
